home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume89 / aplictns / sorts.1 < prev   
Text File  |  1989-03-15  |  32KB  |  760 lines

  1. Path: xanth!ukma!mailrus!ulowell!page
  2. From: page@swan.ulowell.edu (Bob Page)
  3. Newsgroups: comp.sources.amiga
  4. Subject: v89i066:  sorts - sort algorithm demo
  5. Message-ID: <12258@swan.ulowell.edu>
  6. Date: 15 Mar 89 22:06:12 GMT
  7. Organization: University of Lowell, Computer Science Dept.
  8. Lines: 749
  9. Approved: page@swan.ulowell.edu
  10.  
  11. Submitted-by: jonasf@kuling.UUCP (Jonas Flygare)
  12. Posting-number: Volume 89, Issue 66
  13. Archive-name: applications/sorts.1
  14.  
  15. This is a small program I wrote as part of an assignment..  It is kind
  16. of neat, except for the code, which is a mess, as I haven't had ANY
  17. ambitions except making this thing work before I fell asleep.. ;-)
  18.  
  19. The program:
  20.  
  21. Sort [interval] [method]
  22. interval is a number from 0 to 700 and method a number from 0 to 2.
  23. Basic sort is quicksort, although for large values of interval it
  24. turns into the method chosen.
  25. 0 = straight insertion (DUMB implementation)
  26. 1 = bubblesort, no sentinel.
  27. 2 = heapsort, some bugs here, partly due to the fact that the code was
  28.     written as part of an assignment at 3 in the morning.... ;-)
  29.     Manifests in that some elements near the upper limit of each
  30.     interval doesn't get sorted. If You find it, mail me what it is.
  31.     (I have MORE than enough job, as it is, and the only reason I mail
  32.      this program as-is, is that it might give someone some ideas on
  33.      how to improve it (colors, more data in the display, etc..))
  34. Have fun.
  35.  
  36. [uuencoded executable included.  ..Bob]
  37.  
  38. #    This is a shell archive.
  39. #    Remove everything above and including the cut line.
  40. #    Then run the rest of the file through sh.
  41. #----cut here-----cut here-----cut here-----cut here----#
  42. #!/bin/sh
  43. # shar:    Shell Archiver
  44. #    Run the following text with /bin/sh to create:
  45. #    display.c
  46. #    main.c
  47. #    qsort.c
  48. #    sorts.uu
  49. # This archive created: Wed Mar 15 17:02:22 1989
  50. cat << \SHAR_EOF > display.c
  51. #include <stdio.h>
  52. #include <stdlib.h>
  53. #include <exec/types.h>
  54. #include <intuition/intuition.h>
  55.  
  56. struct IntuitionBase *IntuitionBase;
  57. struct GfxBase *GfxBase;
  58. struct Window *OurWindow;
  59.  
  60.  
  61. #define REVISION 33
  62.  
  63. struct NewWindow NewWindowStructure1 = {
  64.     0,0,    /* window XY origin relative to TopLeft of screen */
  65.     640,512,    /* window width and height */
  66.     0,1,    /* detail and block pens */
  67.     NULL,    /* IDCMP flags */
  68.     ACTIVATE|WINDOWCLOSE|WINDOWDRAG|WINDOWSIZING|SMART_REFRESH|WINDOWDEPTH|GIMMEZEROZERO,    /* other window flags */
  69.     NULL,    /* first gadget in gadget list */
  70.     NULL,    /* custom CHECKMARK imagery */
  71.     "Quicksort window",    /* window title */
  72.     NULL,    /* custom screen pointer */
  73.     NULL,    /* custom bitmap */
  74.     5,5,    /* minimum width and height */
  75.     640,512,    /* maximum width and height */
  76.     CUSTOMSCREEN    /* destination screen type */
  77. };
  78.  
  79.  
  80. struct NewScreen NewScreenStructure = {
  81.     0,0,    /* screen XY origin relative to View */
  82.     640,512,    /* screen width and height */
  83.     2,    /* screen depth (number of bitplanes) */
  84.     0,1,    /* detail and block pens */
  85.     LACE+HIRES,    /* display modes for this screen */
  86.     CUSTOMSCREEN,    /* screen type */
  87.     NULL,    /* pointer to default screen font */
  88.     "Hires Screen",    /* screen title */
  89.     NULL,    /* first in list of custom screen gadgets */
  90.     NULL    /* pointer to custom BitMap structure */
  91. };
  92.  
  93. void OpenAll()
  94. {
  95.   IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library", REVISION);
  96.   if (IntuitionBase==NULL) exit(0);
  97.   GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",REVISION);
  98.   if (GfxBase==NULL) exit(0);
  99. }
  100.  
  101. struct Window *makewindow(struct screen *screen)
  102. {
  103.   struct Window *tmp;
  104.   extern struct NewWindow NewWindowStructure1;
  105.   NewWindowStructure1.Screen=screen;
  106.   tmp=(struct Window *)OpenWindow(&NewWindowStructure1);
  107.   if (tmp==NULL) 
  108.   {
  109.     CloseScreen(screen);
  110.     exit(0);  /* exit closes all libraries */
  111.   }
  112.   else return(tmp);
  113. }
  114.  
  115. struct Screen *makescreen()
  116. {
  117.   struct Screen *tmp;
  118.   extern struct NewScreen NewScreenStructure;
  119.   tmp=(struct Screen *)OpenScreen(&NewScreenStructure);
  120.   if (tmp==NULL) exit(0);
  121.   else return(tmp);
  122. }
  123. SHAR_EOF
  124. cat << \SHAR_EOF > main.c
  125. #include <stdio.h>
  126. #include <stdlib.h>
  127. #include <exec/types.h>
  128. #include <intuition/intuition.h>
  129.  
  130. #define ARRAYMAX 480
  131. struct RastPort *rp; /* global so qsort()can see it.. */
  132.  
  133. void main(int argc, char **argv)
  134. {
  135.   int array[ARRAYMAX];
  136.   float sec,getelapsed();
  137.   int loop;
  138.   int abort=0, test=0;
  139.   void insertion_sort(), bubble_sort(), heap_sort();
  140.   extern struct IntuitionBase *IntuitionBase;
  141.   extern struct GfxBase *GfxBase;
  142.   unsigned int time1[2], time2[2];
  143.   void quicksort(), clearscreen(), putpos(),*sortfun;
  144.   void init();
  145.   void display();
  146.   void permute(), OpenAll();
  147.   struct Window *makewindow(), *mywindow;
  148.   struct Screen *myscreen, *makescreen();
  149.   if (argc>1) abort=atoi(argv[1]);
  150.   if (argc>2) test=atoi(argv[2]);
  151.   switch (test) {
  152.    case 0 : sortfun=insertion_sort;
  153.             break;
  154.    case 1 : sortfun=bubble_sort;
  155.             break;
  156.    case 2 : sortfun=heap_sort;
  157.         break;
  158.    default : sortfun=insertion_sort;
  159.              break;
  160.             }
  161.   OpenAll();
  162.   myscreen=makescreen();
  163.   mywindow=makewindow(myscreen);  
  164.   rp=mywindow->RPort;
  165.   init(array);
  166.   permute(array);
  167.   timer(time1);
  168.   SetAPen(rp,1);
  169.   for (loop=0;loop<ARRAYMAX;loop++)
  170.   {
  171.     WritePixel(rp,loop,array[loop]);
  172.   }
  173.   quicksort(array,0,(ARRAYMAX-1),abort,sortfun);
  174.   timer(time2);
  175.   sec=getelapsed(time1,time2);
  176.   printf("Time elapsed: %2.4f\n", sec);
  177.   Delay(250L);
  178.   CloseWindow(mywindow);
  179.   CloseScreen(myscreen);
  180.   CloseLibrary(GfxBase);
  181.   CloseLibrary(IntuitionBase);
  182. }
  183.  
  184. void init(int *array)
  185. {
  186.   int loop;
  187.   for (loop=0;loop<ARRAYMAX;loop++) array[loop]=loop;
  188. }
  189.  
  190. void display(int *array)
  191. {
  192.   int loop;
  193.   for (loop=0;loop<ARRAYMAX;loop++) printf("[%03d]", array[loop]);
  194.   printf("\n");
  195. }
  196.  
  197. void permute(int *array)
  198. {
  199.   int index;
  200.   int tmp;
  201.   int swap;
  202.   for (index=0;index<ARRAYMAX;index++)
  203.   {
  204.     swap=rand()%ARRAYMAX;
  205.     tmp=array[index];
  206.     array[index]=array[swap];
  207.     array[swap]=tmp;
  208.   }
  209. }
  210.  
  211. void clearscreen()
  212. {
  213.   printf("\033[H\033[J");
  214. }
  215.  
  216. void putpos(int x, int y)
  217. {
  218.   printf("\033[%d;%dHX",y,x);
  219. }
  220.  
  221. void clearpos(int x, int y)
  222. {
  223.   printf("\033[%d;%dH ",y,x);
  224. }
  225.  
  226. float getelapsed(unsigned int start[2], unsigned int elapsed[2])
  227.   float t1;
  228.   unsigned int begin;
  229.   float micros;
  230.   begin=elapsed[0]-start[0];
  231.   micros=((float)elapsed[1]/1000000.0)-((float)start[1]/1000000.0);
  232.   t1 = (float)begin+micros;
  233. #ifdef DEBUGGING
  234.   printf("sec: %d Micros: %f Sum: %f\n", begin, micros, t1);
  235. #endif
  236.   return((float)(t1));
  237. }
  238. SHAR_EOF
  239. cat << \SHAR_EOF > qsort.c
  240. #include <stdio.h>
  241. #include <math.h>
  242. void
  243.  quicksort(int *array, int left, int right,int abort, void (*sortfun)())
  244. {
  245.   register int i,j;
  246.   int x,y;
  247.   void clearpos();
  248.   void setpos();
  249.   extern struct RastPort *rp;
  250.   void insertion_sort();
  251.   i=left;
  252.   j=right;
  253.   if ((right-left)<=abort)
  254.   {
  255.     (*sortfun)(array, left, right);
  256.   }
  257.   else
  258.   {
  259.     x=array[(left+right)/2];
  260.     do {
  261.       while(array[i]<x && i<right) i++;
  262.       while(x<array[j] && j>left) j--;
  263.       if (i<=j) {
  264.         SetAPen(rp, 0);
  265.     WritePixel(rp,i,array[i]);
  266.     WritePixel(rp,j,array[j]);
  267.         y=array[i];
  268.         array[i]=array[j];
  269.         array[j]=y;
  270.      Delay(1L);
  271.         SetAPen(rp, 1);
  272.     WritePixel(rp,i,array[i]);
  273.     WritePixel(rp,j,array[j]);
  274.         i++; j--;
  275.       }
  276.     } while (i<=j);
  277.     if (left<j) quicksort(array, left, j, abort, sortfun);
  278.     if (i<right) quicksort(array,i,right, abort, sortfun);
  279.   }
  280. }
  281.  
  282.  
  283. void insertion_sort(int *array, int left, int right)
  284. {
  285.   extern struct RastPort *rp;
  286.   static int tmp[1000];
  287.   int i,j,k,l,length, start=0;
  288.   length=right-left;
  289.   tmp[start++]=array[left];
  290.   for (i=left+1;i<(right+1);i++)
  291.   {
  292.      for (j=0;((j<start)&&(array[i]>tmp[j]));j++);
  293.      SetAPen(rp,0);
  294.      WritePixel(rp,i,array[i]);
  295.      for (k=start;k>j;k--) 
  296.      {
  297.        SetAPen(rp,0);
  298.        WritePixel(rp,k+left-1,tmp[k-1]);
  299.        tmp[k]=tmp[k-1];
  300.        SetAPen(rp,1);
  301.        WritePixel(rp,k+left,tmp[k]);
  302.      }
  303.      SetAPen(rp,0);
  304.      WritePixel(rp,j+left,tmp[j]);
  305.      tmp[j]=array[i];
  306.      SetAPen(rp,1);
  307.      WritePixel(rp,j+left,tmp[j]);
  308.      start++;
  309.   }
  310.   for (j=left,k=0;j<right+1;j++,k++) 
  311.   {
  312.     array[j]=tmp[k];
  313.   }
  314. }
  315.  
  316. void bubble_sort(int *array, int left, int right)
  317. {
  318.    int loop1,loop2, sentinel=1, tmp;
  319.    extern struct RastPort *rp;
  320.    for (loop1=left;loop1<right;loop1++)
  321.     {
  322.       for (loop2=right;(loop2>loop1);loop2--)
  323.        { 
  324.          if (array[loop1]>array[loop2]) {
  325.       SetAPen(rp,0);
  326.       WritePixel(rp,loop1,array[loop1]);
  327.       WritePixel(rp,loop2,array[loop2]);
  328.           tmp=array[loop1];
  329.           array[loop1]=array[loop2];
  330.           array[loop2]=tmp;
  331.       SetAPen(rp,1);
  332.       WritePixel(rp,loop1,array[loop1]);
  333.       WritePixel(rp,loop2,array[loop2]);
  334.           }
  335.         }
  336.      }
  337. }
  338.  
  339. void heap_sort(int *array,int left, int right)
  340. {
  341.   extern struct RastPort *rp;
  342.   int l,r,R,N,K,i,j;
  343.   int temp[1000];
  344.   for (l=left;l<=right;l++) temp[l-left+1]=array[l];
  345.  
  346.       N=(right-left)+1;
  347. H1:   l=N/2;
  348.       r=N;
  349. H2:   if (l>1) {l--; R=K=temp[l];}
  350.       else
  351.        {
  352.     SetAPen(rp,0);
  353.         WritePixel(rp,r+left-1,temp[r]);
  354.         R=K=temp[r];
  355.     temp[r]=temp[1];
  356.     SetAPen(rp,1);
  357.         WritePixel(rp,r+left-1,temp[r]);
  358.     r--;
  359.         if (r==1)
  360.      {
  361.           SetAPen(rp,0);
  362.           WritePixel(rp,left,temp[1]);
  363.       temp[1]=R; 
  364.           SetAPen(rp,1);
  365.           WritePixel(rp,left,temp[1]);
  366.       goto end;
  367.       }
  368.     }
  369. H3:   j=l; 
  370. H4:   i=j; j=(2*j);
  371.       if (j<r) goto H5;
  372.       if (j==r) goto H6;
  373.       if (j>r) goto H8;
  374. H5:   if (temp[j]<temp[j+1]) j=j+1;
  375. H6:   if (K>=temp[j]) goto H8;
  376.       
  377. H7:   SetAPen(rp,0);
  378.       WritePixel(rp,i+left-1,temp[i]);
  379.       temp[i]=temp[j];
  380.       SetAPen(rp,1);
  381.       WritePixel(rp,i+left-1,temp[i]);
  382.       chkabort();
  383.       goto H4;
  384. H8:   SetAPen(rp,0);
  385.       WritePixel(rp,i+left-1,temp[i]);
  386.       temp[i]=R;
  387.       SetAPen(rp,1);
  388.       WritePixel(rp,i+left-1,temp[i]);
  389.       chkabort();
  390.       goto H2;
  391. end:  for (l=left;l<=right;l++) array[l]=temp[l-left+1];
  392.  
  393. }
  394. SHAR_EOF
  395. cat << \SHAR_EOF > sorts.uu
  396.  
  397. begin 664 Sorts
  398. M```#\P`````````)``````````@```M(````U````#,```%>```%0@````4`,
  399. M```+````#0```!0```/I```+2"1()`!)^0````!'^0```O!R`"`\```$AF`"I
  400. M)L%1R/_\+'@`!"E.`R@I3P,P0JP#+"9N`11P`"(\```P`$ZN_LXI:P"8`R1*9
  401. MJP"L9P``<"`/D*\`!`:`````@"E``O1A``$N(&L`K-'(T<@B:``0T\G3R2`"R
  402. M<@`2&2E)`SC0@5*`0F=2@`)`__Z?P%6`0G<(`"`"4X#4@1^R```@`%."4<C_$
  403. M]A^\`"`@`%."'[$@`"``4<K_^")/+PE@``!X*6L`.@+T<']2@-&L`O1A``#"D
  404. M0>L`7$ZN_H!!ZP!<3J[^C"E``RPO`"1`("H`)&<2+&P4^"!`(B@``"E!`R1./
  405. MKO^"(BH`(&<:)#P```/M3J[_XBE``S1G"N6(($`G:``(`*0@;`,L+PA(;`+PZ
  406. M(&@`)"EH``0#.$ZZ`/1.NAHX<`!@!"`O``0O`"`L`QQG!"!`3I!.NBJX+'@`*
  407. M!")L%/A.KOYB3KH`RDJL`RQG&B(L`S1G!$ZN_]PL>``$3J[_?")L`RQ.KOZ&5
  408. M(!\N;`,P3G5P9&"T0_H`$'``3J[]V"E`%/AG[$YU9&]S+FQI8G)A<GD`+P<N=
  409. M+P`(4JP2[%.L`19M%B!L`0Y#Z``!*4D!#B`'$(!R`!(`8!0@!W(`$@!(;`$*M
  410. M+P%.NAP$4$\B`"X?3G5.50``+PLF;P`,0JP2[$AM``PO"TAZ_ZQ.NA;P2&P!^
  411. M"DAX__].NAO4("P2["9M__Q.74YU``````````!P84YU3G5.4/_B3E$``$CGI
  412. M?S`D:``((!HB$DZZ!Y9":0`(0FD`!B\`@Y]F#B1H`!PF*``,4X-@``#T4D(SR
  413. M0@`$2$(S0@`(0D8T*0`$9UQJ$E9":Q@*0@`#U6D`!&$``/Q@2&$``2Q2:0`&U
  414. M8!)T!-5I``1A``#F80``[%-I``9*@&O$4VD`!..)XY!@\D)"0D8O`(.?9Q1AE
  415. M``#,2D9F#`Q"``%F!E-I``9@[`8&`#`3AB`*4D(,0@`4:]1V`20H``Q*J``0<
  416. M9PIX`=1I``930FLZ>!0,0@`2;#(X`AHQ(`L&!0`%#`4`.6\B$[P`,"`+4C$@9
  417. M"AHQ*`I30FKH4FD`!E-#>@"ZJ``09P)2A"1H`!Q'\3`*(`1G'E-$-@0$0P`4?
  418. M:P)X$Q3;4<S__$I#:P@4_``P4<O_^B1H`!A"DDII``AG`E.2)&@`%$*!,BD`3
  419. M!DC!)(%,WPS^3EE.6$YUXHCBD5-"9OA.=7P`2.<P`"0`)@'CB>.0XY;CB>.0I
  420. MXY;2@]&"9```!%*&XXGCD..63-\`#$YU+P)T`#\\`$#CB>.0XY(,0@`*;0@$X
  421. M@@````I2@5-79NA/[P`")!].=4Y0__1.40``2.=^,'``<@`S0```,T```C-`G
  422. M``0S0``&80`!=`P&`#!F"`!I(```!&#N#`8`+68*`&F````$80`!5@P&`#!MA
  423. M/@P&`#EN.`!I(```!#-&``H\*0`&G6D``B\``I_P````9P92:0`"8,YA`/\ZD
  424. M/"D`"@*&````#]*&0H;1AF"X#`8`+F8,2FD`!F9B4FD`!F"F#`8`16<&#`8`E
  425. M969080``\`P&`"MG#`P&`"UF"@!I$```!&$``-H,!@`P;3`,!@`Y;BHZ*0``H
  426. MX^D``./I``#;:0``X^D```)&``_=:0``#&D/_P``;<SBZ0``8/(_*0`$`E\@+
  427. M`&8*)&@`%$*28```@#0I```_*0`$`E\0`&<"1$+5:0`"+P"#GV=2,WP`/P``E
  428. M2H!K"N.)XY!3:0``8/)*:0`"9R!K%'0$U6D``&$`_EQA`/YB4VD``F#680#^L
  429. MA%)I``)@S'0`-"D``#\I``0"7X``9P0(P@`?3KH$OB1H`!@DP"2!)&@`%"2\6
  430. M`````7``,"D`"$S?!'Y.64Y83G4L*``(9PHA?```````"$YU2.?\X"1H`!!.Y
  431. MDCP`3-\'/S-&``A3J``,9@@`:0@```1.=3\I``0"7P@`9P)\_TYU2.<`P"!$\
  432. M2$`X``)$@`"Y0`1`.``,0``0;0``:@Q`#^]M``#,#$!'\&T``!I(0.>(YYD"T
  433. M@0````>S@$A``$!_@&```+P,0`_P;```%@R`__\/[V8``)H,@?````!E``"0E
  434. M2.?`P$AY`````DZZ!(Q83TS?`P,@/```?X"Y0$A`<@!@``"`#$#^D&P``"8&"
  435. M0#@`@(%G``!J2.?`P$AY`````4ZZ!%983TS?`P-P`&```%`B13H``D``#PI`1
  436. M`!!(0.A%5$5L```.1$7JJ'H`T85@```20D'KJ%)%Z[$"@0````_1@2H)2$"Y6
  437. M0$A`8```%DA`YXCID0*!````!]&!2$"Y0$A`*`A,WP,`3G4``"(`2$$"07__A
  438. M#$$`@&T``"0,07^`;```/N:``H"/____!H`X````2$$"@0````?FF4YU2H%G-
  439. M^DCG/`!(0#@``D2``#H\.=!P`$A!3KH!K$S?`#Q.=>:``(!_\```2$$"@0``C
  440. M``?FF4YU+P9*@&<``(Q\`&```!0@+P`$+P8L`&<``'IJ```$1(`,@`$```!ED
  441. M``!B/#Q*@`R`@````&4```H&A@``!`#@B`R`"````&4```H&A@```@#HB`R`D
  442. M`@```&4```H&A@```0#DB`R``0```&4```@&1@"`XHAR`-&!2$#01DA&`D:`2
  443. M`+U`2$!@```*/#Q+`$ZZ`9PL'TYU``!P`"(`N4!(0$YU2.?`P$AY`````4ZZT
  444. M`M983TS?`P-P`'(`N4!(0$YU2.?`P$AY`````DZZ`KA83TS?`P,@/```?_"YF
  445. M0'(`2$!.=4CGP,!(>0````1.N@*66$],WP,#(#Q_\0``<@!.=0@```-G```>Z
  446. M2.?`P$AY````!$ZZ`G!83TS?`P,(@``#",```0!`?_!(0$YU2$!(1'H0#(``^
  447. M```@;```%DA`2$$P`4)!!$4!``R`````(&WL0D0,@```(`!L```&X8A01$A`?
  448. M2D!F```&Z9A81'P`0_H`/APQ``#MN-A&2$`L`>FIZ;ZS1KU`Z4R:1$A`2$1.S
  449. M=0R`````(&P``#9(0$A!,`%"001%`0!L`/_H8```9@4$`P,"`@("`0$!`0$!(
  450. M`0$`````````````````````=@`,@```(`!L```&X8A00TA`2D!F```&Z9A8I
  451. M0W0`%#L`P.6XUD)(0"0!YZGGNK-"M4#I2YI#;0``#$A`T$6`1$A`3G5$1>A-W
  452. M)`#JJ.JZZJFQ@K6!2$"Y0$A`3G4```R````!`&P```H$1@@`8```$$A`2D!F?
  453. M```(X9@$1@0`#$``$&P```CIF`1&`@`,0`!`;```".68!$8!`$H`:P``"..8L
  454. M!$8`@$A`2D9L```21$;N3NRHW(;BD'(`T8%.=4I&9P``%DA`"D``@+U`2$8"!
  455. M1H``O4!(0$YU4H#<AN*03G4``"0``H!_____9@AP`'(`=`!@(DA"2,+H0@*"A
  456. M@``'_P1"`_\O`G0*XXGCD%'*__H(P``?)!].=2\#+P"#GV=D!$(`"TJ`9@@@4
  457. M`4*!!$(`("\``I__X```9R120N*(XI'BDR\``I__X```9NY*@VH.4H%D"E*`E
  458. M8-A30N.)XY`(```49_0&0@/_;QX,0@?_;"8"@``/___I2C\"0D)(0H1?2$*`>
  459. M@B8?3G4O/`````%.N@`F<`!@%B\\`````DZZ`!@P/'_P2$*`0DA`0D!/[P`$*
  460. M<@!@T```+P<N+P`(*4<##$JL`Q!G%#!\``$B;`,0L\AG"$AX``A.D5A/+A].A
  461. M=0```````````````$CG/T!A```(3-\"_$YU/#R``#X\?_!(0$A".`#(1KE`J
  462. MS$*]0KU$L$=M``!PL$)M```L#(```'_P9@``"$J!9P``!D[Z_02T1VT``!X,I
  463. M@@``?_!F```(2H-G```*(`(B`T[Z_.9.^OS$2H)F```J2H-F```D2.?`P$AYY
  464. M`````TZZ_TQ83TS?`P,@/```?_"Y0'(`2$!.=4[Z_(2T1VT``!X,@@``?_!F@
  465. M```(2H-G```*(`(B`T[Z_)).^OPF.@#*1V8``"I*@&8``!Q*@68``!9*@F8`M
  466. M``Q*@V8```9.^OQ,3OK[_DZZ_(Y@```(NT`*0``0SD)F```F2H)F```,2H-FR
  467. M```&8`#_;L%"PT/+1TZZ_&3!0L-#RT=@```(OT(*0@`0!$<_X)I':```!D[ZW
  468. M^]I(0"X!Z8CIB>F?LT>_0$A"+@-\"^VJ[:OMO[='OT)(1#@%(D1(0H#".`!('
  469. M03`!0D%(0CH"RL1(0SP#S,1(0SX#SL1(1]Y&2$="1DA&W862AY&&9```"%-$N
  470. MTH/1@D)#2$0L`$A"@,)H```80D0@!I*#2$*1@DA`2$$P`4)!8```*C@`2$$P/
  471. M`4)!2$(\`LS$+@-(1\[$2$?<1TA&0D?=1TA&DH>1AF0``!)31-*#T8)E```([
  472. M4T32@]&"+`!(0H#":```%$)%(`9(0I!"2$!(03`!8```%#H`2$$P`4A"/`+,Z
  473. MQ9"&9```#E-%T()E```&4T70@DA%2$*`PF@```1P_SH`(`0B!2@).@1(1$[Z(
  474. M``0```R``@```&T``!#BB.*12D5L``!,8```"@1%`!!L``!`1$7H35A%#$4`.
  475. M.6\```Y.^OIZ,@!"0$A`2$$$10`0;O(&10`0)`#JJ.JZZJFQ@K6!=`#3@M&"]
  476. M2$"Y0$A`3G4D`.B(Z)KHB;&"M8%T`-."T8)(0-!%#$!_\&4$3OKZ3+E`2$!.V
  477. M=4CG/T!A```:3-\"_$YU2.<_0&$```A,WP+\3G4(0@`?2$!(0CP\@``^/'_PI
  478. M.`#(1KE`.@#*1[M`S$*]0LY"OT*Z1V8``.`,17_P9@``*K!";0``$BX`CH%F.
  479. M```.+@*.@V<```H@`B(#3OKZ&KQ$9P``?D[Z^?)*168``$1(0&8``"A*@68`[
  480. M`")(0F8```Y*@V8```C(1D[Z^80@`B(#2$"]0+]`2$!.=4A"9@``'DJ#9@``%
  481. M&$A`N4"[0$A`3G5^$)I'OT"_0DA`2$*\1&<``"22@V8```J1@F8```9.=9&"%
  482. M:@``"$2!0(`X!D[Z^BA.^OEHTH/1@@R``"```&T``!3BB.*1?@#3A]&'!D4`U
  483. M$`Q%?^!E```&3OKY+$A`T$6`1$A`3G5N```*P4+#0\E&RT<,17_P9P``,$I'.
  484. M9@``/DA"9@``$$J#9@``"KE`NT!(0$YUUH/5@DI%9@``)DA`TH'1@&```")*C
  485. M@&8```Q*@68```9.^OCD3OKY#`I"`!!(0@I``!!(0)Y%1D?H1P1%`"`,1P`TQ
  486. M;@``'M*!T8`,1P`@;P``("8"=``$1P`@[JMT`&```#0&10`02$#018!$2$!.L
  487. M=0Q'`!!O```.-@)(0T)"2$($1P`0(D8L`NZJ[K[NJ[6&O8,L";Q$9@``/-*#;
  488. MT8(&10`0XHCBD0R``"```&T```H&10`0XHCBD7X`TX?1ATA`T$4,17_P9```7
  489. M"(!$2$!.=4[Z^""?AY.#D8(,@``@``!M`/ZV1(?2AWX`T8?BB.*1!D4`$$A`-
  490. MT$6`1$A`3G5.5?^@2.<X,"9O`'PD;P"`<``;?``@__MR`"M!__9T_RM"__(K1
  491. M0?_H0>W_T!M`__$;0/_\&T#__1M`__X;0/__*T'_H"M!_^0K0O^P*TC_S$H3?
  492. M9TYP`!`3<AA=06M$L'L0"&;V3OL0!``C8```+``@8```'@`K8```$``M8```0
  493. M`AM\``'__V`6&WP``?_^8`X;?``!__U@!AM\``'__%*+8*X0$W(PL`%F!E*+(
  494. M&T'_^W`JL!-F$"!20^@`!"2)*U#_]E*+8`Y(;?_V+PM.NA%J4$_7P!`3<BZP"
  495. M`68F4HMP*K`39A`@4D/H``0DB2M0__)2BV`.2&W_\B\+3KH1/%!/U\`0$W)LN
  496. ML`%F"AM\``'_\5*+8`AR:+`!9@)2BQ`;<@`2`!M`__!P3EU`:P`"EK)[``AFP
  497. M]$[[``0`9F```GX`16```G(`96```FP`1V```E@`9V```E(`8V```C(`<V``Y
  498. M`?``6&```88`>&```8``<&```68`;V```10`=6```.H`9&````)*+?_Q9PP@C
  499. M4D/H``0DB2`08`H@4D/H``0DB2`0*T#_[&P*<@$K0?_H1*W_[$JM_^AG!'`M:
  500. M8`Q*+?_^9P1P*V`"<"`;0/_0<``0+?_^(BW_Z(*`<``0+?_]@H!G"%*M_\Q2:
  501. MK?_D+RW_["\M_\Q.N@]P4$\K0/_(("W_\DJ`:@9R`2M!__(@+?_((BW_\I*`$
  502. M2.T``O_$;RX@;?_,(DC3P6`"$MA3@&3Z<``0+?_[(BW_Q"!M_\Q@`A#`4X%DE
  503. M^B`M__(K0/_(T:W_Y$'M_]`K2/_,2BW__V<``6P;?``@__M@``%B2BW_\6<,=
  504. M(%)#Z``$)(D@$&`*(%)#Z``$)(D@$"M`_^Q@`/]@2BW_\6<,(%)#Z``$)(D@#
  505. M$&`*(%)#Z``$)(D@$"M`_^Q*+?_\9Q(@;?_,$/P`,'(!*T'_Y"M(_\PO`"\M8
  506. M_\Q.N@[(4$\K0/_(8`#_)AM\`##_^R`M__)*@&H&<`@K0/_R2BW_\6<,(%)#;
  507. MZ``$)(D@$&`*(%)#Z``$)(D@$"M`_^Q*+?_\9Q8@;?_,$/P`,!#\`'AR`BM!N
  508. M_^0K2/_,+P`O+?_,3KH.I%!/*T#_R'!8L"W_\&8`_KQ(;?_03KH-8%A/8`#^T
  509. MKB!20^@`!"2)(E`K2?_,9@A!^@6<*TC_S"!M_\Q*&&;\4XB1[?_,*TC_Y"`M8
  510. M__)*@&M&L<!O0BM`_^1@/'`!*T#_Y"!20^@`!"2)(!`;0/_00BW_T6`B<`(K]
  511. M0/^P<`$K0/^@8!1"K?^P8`YP`2M`_[!@!G``8``%,"`M_[!*@&H``)(@+?_D2
  512. M(BW_]K*`;`AT`"M"__9@!)&M__9*+?__9S93K?_D;1AP`"!M_\P0&"\`*TC_B
  513. MS"!M`!!.D%A/8.)3K?_V;4AP`!`M__LO`"!M`!!.D%A/8.A3K?_V;1)P`!`M[
  514. M__LO`"!M`!!.D%A/8.A3K?_D;1AP`"!M_\P0&"\`*TC_S"!M`!!.D%A/8.(@<
  515. M"V``!)9P_["M__)F!G`&*T#_\B`M__)R%+"!;01R$V`"(@`K0?^X*T'_Y%*!T
  516. M2&W_T$AM_^A(;?^T+RW_L"\!+Q).NNV83^\`&"(M_[1([0`!_^1([0`"_[QL@
  517. M!$2M_[QP`K"M_[!F0DJM_^1G#@RM````!/^\;01P`&`"<`$K0/^P2H!F)"(M.
  518. M_[A2@4AM_]!(;?_H2&W_M"\`+P$O$DZZ[3Q/[P`8*T#_Y%"20>W_T"M(_\Q*N
  519. MK?_D9P13K?^T<`!R`!(M__XD+?_HA(%R`!(M__V$@2M`_[Q*@F<$4JW_O$JM)
  520. M_[!G``"B(BW_M$J!:P33K?^\=``4+?_\)BW_\H:"*"W_H(:$9P12K?^\2H1G#
  521. M:$H"9F1*K?_D9@8K0/_R8$Y2@20M_^24@4CM``+_J$CM``3_I&P&*T#_\F`R$
  522. M("W_\K"";P0K0O_RT<%3B"M(_ZQ*K?_R9Q@@;?_R<#`B;?^L(@BP,1@`9@93M
  523. MK?_R8.)*K?_R9@13K?^\("W_\B(`4H'3K?^\8```HB`M__(B`%J!TZW_O$JM*
  524. M_Z!G"%.M__)3K?^\("W_M$J`:@8B`$2!8`(B`"M!_[AP8[*`;P12K?^\#($`!
  525. M``/G;P12K?^\<``0+?_\(BW_\B0`A($F+?^@A(-G!%*M_[Q*@V<^2@!F.B`MO
  526. M_^2R@&T&4X`K0/_R2JW_\F<<(&W_\G`P(FW_S"((L#$8`&8*4ZW_\E.M_[Q@Y
  527. MWDJM__)F!%.M_[Q*+?__9BP@+?^\(BW_]K*`;R"1K?_V4ZW_]FT6<``0+?_[1
  528. M+P`@;0`03I!83U*M_[Q@Y$JM_^AG#DAX`"T@;0`03I!83V`J2BW__F<.2'@`D
  529. M*R!M`!!.D%A/8!9*+?_]9Q!P`!`M__LO`"!M`!!.D%A/2JW_L&<``,@@+?^TZ
  530. M2H!J5$AX`#`@;0`03I!(>``N(&T`$$Z04$]3K?_R;0`!H%*M_[1L#DAX`#`@V
  531. M;0`03I!83V#D4ZW_Y&T.<``@;?_,$!@K2/_,8`)P,"\`(&T`$$Z06$]@PB`M4
  532. M_[13K?^T2H!K(E.M_^1M#G``(&W_S!`8*TC_S&`"<#`O`"!M`!!.D%A/8-)*8
  533. MK?_R9PQ(>``N(&T`$$Z06$]3K?_R;0`!(E.M_^1M#G``(&W_S!`8*TC_S&`"0
  534. M<#`O`"!M`!!.D%A/8-93K?_D;0YP`"!M_\P0&"M(_\Q@`G`P+P`@;0`03I!8W
  535. M3TJM__)G#$AX`"X@;0`03I!83U.M__)M(E.M_^1M#G``(&W_S!`8*TC_S&`"H
  536. M<#`O`"!M`!!.D%A/8-@0+?_P<F6P`6<&<F>P`68$<&5@`G!%+P`@;0`03I!8L
  537. M3R`M_[1*@&H22'@`+2!M`!!.D%A/1*W_M&`,2'@`*R!M`!!.D%A/<`LK0/_`F
  538. M4ZW_P"`M_[1R"DZZ#T!P,-*`("W_P!N!"-`@+?^T<@I.N@\J*T#_M`RM````8
  539. M"?_`;LY*K?^T9L@@+?_`<@NP@6P64JW_P'(`$C4(T"\!(&T`$$Z06$]@X'`!J
  540. ML"W__V8L("W_O"(M__:R@&\@D:W_]E.M__9M%G``$"W_^R\`(&T`$$Z06$]2O
  541. MK?^\8.0@"TS?#!Q.74YU``!.5?_V2.<`,"9O`!HD;P`>*VT`$/_V$!H;0/__/
  542. M2@!G-G(EL`%F(K(29@12BF`:+PM(;?_V+PIA`/;(3^\`#"M`__IG!"1`8,YP2
  543. M`!`M__\O`$Z36$]@P$S?#`!.74YU``!(YP<P+B\`&"9O`!PL+P`@+P=.NA#`,
  544. M6$\D0"`*9@1P_V`V""H``P`#9Q!(>``"0J<O!TZZ"EQ/[P`,+P8O"R\J``1.&
  545. MN@O(3^\`#"H`2JP#"&<$</]@`B`%3-\,X$YU``````````!P84CG`Q`F;P`0U
  546. M($M*&&;\4XB1RRP(?@`>&TJ'9S)3K`$6;18@;`$.0^@``2E)`0X@!Q"`<@`27
  547. M`&#<(`=R`!(`2&P!"B\!3KH#XE!/(@!@QDAL`0I(>/__3KH#T%!/(`9,WPC`Z
  548. M3G5.5?_<2.</,"9O`$1\`$'M``PK2/_R'AM*!V<``0IP);X`9@``S!X;<``0<
  549. M!W(874%K``"(L'L0"&;T3OL0!`!D8```4`!X8```&@!P8```%`!S8````B!MH
  550. M__(D6"M(__)@2B!M__(H&"M(__)%[?_L>@=*A6L6(`1R#\"!0?H`P-'`%)!3T
  551. MBNB$4X5@YD(M_^U@&B!M__(H&"M(__(O!$AM_^5.N@<P4$]%[?_E+PI.NO[LV
  552. M6$_<@&``_UY2AE.L`19M&"!L`0Y#Z``!*4D!#B`'$(!R`!(`8`#_/G``$`=(B
  553. M;`$*+P!.N@+>4$\B`&``_RA2AE.L`19M&"!L`0Y#Z``!*4D!#B`'$(!R`!(`,
  554. M8`#_"'``$`=(;`$*+P!.N@*H4$\B`&``_O)(;`$*2'C__TZZ`I0@!DSM#/#_4
  555. MQ$Y=3G4P,3(S-#4V-S@Y04-$148```!.5?_P2.<A,B9O`"P,K````"`4:FP`I
  556. M`(80$W(@L`%G#'()L`%G!G(*L`%F!%*+8.A*$V=H("P4:N6`4JP4:D'L%'+1/
  557. MP"1(<"*P$V8F4HLDBTH39PIP(K`39P12BV#R2A-F#$AX``%.N@],6$]@GD(;+
  558. M8)HDBTH39Q@0$W(@L`%G$'()L`%G"G(*L`%G!%*+8.1*$V8"8`9"&V``_W)*;
  559. MK!1J9@8@;`,L8`1![!1R*4@4;DJL%&IF?$'Z`21#[!0P(M@BV"+8(M@RD")L\
  560. M`RP@:0`D2'@`*"\H``1(;!0P3KH$DD_O``Q![!0P(@@D/````^XL;!3X3J[_*
  561. MXBE`$O0I0!+\<@0I01+X*4`3!"E!$P#E@)/)+'@`!"M`__!.KO[:(&W_\")`D
  562. M(V@`"`"D?@`K0/_T8"HL;!3X3J[_RBE`$O1.KO_$*4`2_$'Z`*8B""0\```#9
  563. M[4ZN_^(I0!,$?@0@!P!`@`&!K!+P(`<`0(`"@:P2^`"L``"``Q,`2JP!4&<$W
  564. M<`!@!B`\``"``"X`0JP!!"`'`$```2E``0!P`2E``28@!P!```(I0`$B<`(IV
  565. M0`%((`<`0`"`*4`!1$'Z"T(I2`,@+RP4;B\L%&I.N@`R0I=.N@?,3.U,A/_<"
  566. M3EU.=6-O;CHQ,"\Q,"\S,C`O.#`O`"H`````````````````3OD`````````4
  567. M````````````````````+PLF;P`(2JL`%&<,""L``P`;9@1P`&`V+RP"[$ZZE
  568. M!U983R=```0G0``02H!F"G`,*4`4]'#_8!8G;`+L`!1P\\&K`!AP`"=```PGX
  569. M0``()E].=0``````````````````3E7_[$CG+Q`N+P`T)F\`."@'<#'`JP`8]
  570. M9P9P_V```G`(*P`'`!I6P$0`2(!(P"P`2JL`%&8``(0(*P`"`!MF>G``)T``2
  571. M#'+_OH%G``)"+PM.NO].6$]*@&<,".L`!0`;</]@``(J".L``0`;2@9G#B`K'
  572. M`!0B`$2!)T$`#&`(("L`%"=```Q3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2@
  573. M`&`2(`=R`!(`+PLO`6$`_U)03R(`(`%@``'6""L``@`;9UAP_[Z`9@9P`&``*
  574. M`<(@!QM`__]*!F<B<@J^@68<<@(O`4AZ`;(O*P`<*T'_\$ZZ^H!/[P`,*@!@9
  575. M&G(!+P%(;?__+RL`'"M!__!.NOID3^\`#"H`?O]@``#@".L``0`;2@9G4G#_?
  576. MOH!G3%2K``QR"KZ!9B8@:P`$0^@``2=)``00O``-(BL`#$J!:PHO"R\`80#^L
  577. MKE!/4JL`#"!K``1#Z``!)TD`!"`'$(`B*P`,2H%K``$<?O\@*P`$D*L`$"M`J
  578. M__!G<@@K``8`&F=22'@``D*G+RL`'$ZZ!&A/[P`,*T#_[$H&9SA3K?_L;3)"$
  579. MIR\M_^PO*P`<3KH$2$AX``%(;?_]+RL`'$ZZ`\1/[P`82JP#"&8*$"W__7(:[
  580. ML`%GR"\M__`O*P`0+RL`'$ZZ^81/[P`,*@!@`GH`</^Z@&8(".L`!0`;8`RZP
  581. MK?_P9P8(ZP`$`!M*!F<.(BL`%"0!1((G0@`,8!@(*P`"`!MG"'(`)T$`#&`(F
  582. M(BL`%"=!``P@:P`0)T@`!+Z`9RY3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2M
  583. M`&`2(`=R`!(`+PLO`6$`_9!03R(`<##`JP`89P1P_V`,</^X@&8$<`!@`B`$F
  584. M3-\(]$Y=3G4-"@`````N;`,P3KH&3DAY````%$ZZ!'P``````````'!A2.<@2
  585. M,"9O`!`D2TH29R1P`!`20>P!Z0@P``$(`&<*<@`2`'0@DH)@!'(`$@`4@5**+
  586. M8-@@"TS?#`1.=0``````````<&%.5?_X2.<#,"9O`"`D;P`D+B\`*"!*2AAF1
  587. M_%.(D<HL""!+2AAF_%.(D<L@"")+T\`K2?_XO(=C`BP'(`8@2F`"$MA3@&3Z'
  588. M(&W_^$(P:``@"TS?#,!.74YU+PLF;P`(<``0$T'L`>D(,``#"`!G!%*+8.P@F
  589. M"R9?3G4@+P`((&\`!$Y5__0B3W(*3KH&<`9!`#`2P4J`9O`@"1#AO\EF^D(0\
  590. MD(].74YU```@+P`((&\`!$Y5__0B3R(``D$`!P9!`#`2P>:(9O`@"1#AO\EF`
  591. M^D(0D(].74YU```P,3(S-#4V-S@Y86)C9&5F("\`""!O``1#[P`$,@`"00`/?
  592. M$OL0W.B(9O(@"2(/6($0X;*)9OI"$)"!3G4@+P`((&\`!$Y5__0B3VP&$/P`5
  593. M+42`<@I.N@7,!D$`,!+!2H!F\!#AO\EF^D(0(`A.79"O``1.=2!O``0B2'(`C
  594. M<``O`@P0`"MG!@P0`"UF`E)($!@$```P;1(,```);@PD`>6!TH+2@=*`8.8,@
  595. M$0`M9@)$@20?(`A3@"!O``@@@9")3G5.5?_H2.<!,BXO`#1*AVX&</]@``#2@
  596. M<`B^@&0"+@`@!U:`+@`"1__\)&T`""!M``C1Q]^L`.1#[`#@)E$K2/_P*TG_)
  597. M]"`+9P``D"!+("L`!-'`*TC_[")M__"WR6,0)(LE1P`$+&W_]"R*<`!@>+?)9
  598. M9AHL4R2.("L`!"(`TH<E00`$+&W_]"R*<`!@6K7(9`B?K`#D</]@3K7(9BQ*?
  599. MDV<.(%.SR&,(GZP`Y'#_8#C?JP`$2I-G#K/39@H@*0`$T:L`!":1<`!@'BM+5
  600. M__0K;?_L_^@F4V``_VX@;?_T((I"DB5'``1P`$S?3(!.74YU``````````!P6
  601. M84CG!S`N+P`8)F\`'"PO`"`O!TZZ!J183R1`(`IF!'#_8!XO!B\++RH`!$ZZP
  602. M`HQ/[P`,*@!*K`,(9P1P_V`"(`5,WPS@3G4``"`L`50B/```#EU.N@/$5H`"/
  603. M@'____\I0`%43G4O!RXO``@I1P%4+A].=0``2.</$"XO`!@L+P`<*B\`("\'6
  604. M3KH&,%A/)D`@"V8$</]@'B\%+P8O*P`$3KH!G$_O``PH`$JL`PAG!'#_8`(@(
  605. M!$S?"/!.=0``````````<&%(YP,P+B\`%$J';@9P`&```*1P"+Z`9`(N`"`'X
  606. M5H`N``)'__Q%[`#@)E(@"V=`("L`!+"';3*PAV8,(%,DB)^L`.0@"V!N("L`#
  607. M!)"'<@BP@646($O1QR2()$@DDR5```2?K`#D(`M@3"1+)E-@O"`'(BP!6-"!E
  608. M4X!.N@+Z(BP!6$ZZ`M(L`%"&(`96@"P``D;__"\&3KH';EA/)D`@"V<2+P8O.
  609. M"TZZ_9XNAV$`_U103V`"<`!,WPS`3G4``````````'!A+P<N+P`(+P=.NO\R=
  610. M6$\N'TYU``!(YP,0+B\`$$?L`.@@"V<T""L``@`;9B@(*P`!`!MG("`K``20:
  611. MJP`0+`!*AF<2+P8O*P`0+RL`'$ZZ]`Y/[P`,)E-@R"\'3KH%T%A/3-\(P$YUJ
  612. M``!(YS<0+B\`'"9O`"`L+P`D2JP#(&<$3KH$^$*L`P@B!R0+)@8L;!3X3J[_'
  613. MT"H`</^Z@&8.3J[_?"E``PAP!2E`%/0@!4S?".Q.=0``2.<_`"XO`!PL+P`@1
  614. M*B\`)$JL`R!G!$ZZ!*Q"K`,((`53@"(')`8F`"QL%/A.KO^^*`!P_[B`9@Y.1
  615. MKO]\*4`#"'`6*4`4]"`%#(`````"9Q8,@`````%G"$J`9A@@!F`4(`30AF`.*
  616. M(@=T`'8`+&P4^$ZN_[Y,WP#\3G4``$CG-Q`N+P`<)F\`("PO`"1*K`,@9P1./
  617. MN@0P0JP#""(')`LF!BQL%/A.KO_6*@!P_[J`9@Y.KO]\*4`#"'`%*4`4]"`%=
  618. M3-\([$YU``!(YP`2)F\`#$JK``IG"B)++'@`!$ZN_I@7?`#_``AP_R=``!1P/
  619. M`!`K``\L>``$3J[^L")+<").KO\N3-](`$YU+P<N+P`(2JP#(&<$3KH#KB('[
  620. M+&P4^$ZN_]QP`"X?3G5.5?^P+PY*K`-`9A)#^@"(<``L>``$3J[]V"E``T!P%
  621. M`"!L`S@0*/__0^W_L&`"$MA3@&3Z<``@;`,X$"C__T(U"+!![?^P*4@!:$AXL
  622. M`"A(>`#Z<``O`"\`2&P!A'(`+P%(;`%P+P%.N@.$2'@`%$ZZ`^`L;?^L3EU.K
  623. M=2HJ(%-T86-K($]V97)F;&]W("HJ``!%6$E4``!I;G1U:71I;VXN;&EB<F%R.
  624. M>0````````````````!(YS``)``F`4A"2$/$P<;`P,'40TA"0D+0@DS?``Q.`
  625. M=4J`:@``'D2`2H%J```,1(%A```@1(%.=6$``!A$@$2!3G5*@6H```Q$@6$`&
  626. M``9$@$YU+P)(030!9@``(DA`2$%(0C0`9P``!H3!,`)(0#0`A,$P`DA",@(D,
  627. M'TYU+P-V$`Q!`(!D```&X9E10PQ!"`!D```&Z9E90PQ!(`!D```&Y9E50TI!T
  628. M:P``!N.94T,T`.:H2$)"0N:J2$.`P38`,`(T`TA!Q,&0@F0```A30]"!9/YR5
  629. M`#(#2$/GN$A`P4$F'R0?3G5.5?^>2.<S,GX`(&P#.!XH__]P3[Z`;P(N`"`'4
  630. M0^W_KV`"$MA3@&3Z0C5XKY/)+'@`!$ZN_MHF0$JK`*QG3"`K`*SE@"1`+"H`A
  631. M.$J&9@0L*P"@2H9G-"(&0?H`LB0(=@LL;!3X3J[_T"!'4H<@"!N\``H(KR(&M
  632. M0>W_KR0()@<L;!3X3J[_T'#_8$Y*K`-`9A)#^@"&<``L>``$3J[]V"E``T!!+
  633. M[?^O*4@!N$AX`#Q(>`#Z<``O`"\`2&P!U$AL`<!(;`&L0J=.N@&,3^\`(%.`7
  634. M9P1P_V`"<`!,WTS,3EU.=2HJ(%5S97(@06)O<G0@4F5Q=65S=&5D("HJ``!#1
  635. M3TY424Y510``04)/4E0`*BHJ($)R96%K.B``:6YT=6ET:6]N+FQI8G)A<GD`]
  636. M``!(YP,R)F\`&"XO`!QP_RQX``1.KOZV+``,!@#_9@1P`&!F<"(B/``!``%.N
  637. MKO\Z)$`@"F8*<``0!DZN_K!@2"5+``H@!Q5```D5?``$``A"*@`.%48`#Y/)9
  638. M3J[^VB5``!`@"V<((DI.KOZ>8!I!Z@`8)4@`%$'J`!0E2``<0JH`&!5\``(`$
  639. M("`*3-],P$YU```O!RXO``AP`"E``PA*AVLBOJP`T&P<(`?G@$'L$O!*L`@`B
  640. M9PX@!^>`0>P2\-'`(`A@"'`)*4`4]'``+A].=0``````````<&%(YP$"<``B2
  641. M/```,``L>``$3J[^SBX``H<``#``2H=F!'``8"!*K`,@9Q@@;`,@3I!*@&8$'
  642. M<`!@#$AX`!1.N@!V6$\@!TS?0(!.=6&T3G4``$CG,#(L;`-`(&\`&")O`!PDF
  643. M;P`@)F\`)"`O`"@B+P`L)"\`,"8O`#1.KOZD3-],#$YU``!.5?_\+PLF;P`0I
  644. M(`MF!'``8!8O"TZZ]BXF0$AM__PO"TZZ]Q8@+?_\)FW_^$Y=3G5(YP<`+B\`9
  645. M$"`L`-!3@"P`2D9K,"`&2,#G@$'L$O`J,`@`2@5G&@@%``)F%"`&2,#G@$'L7
  646. M$O`O,`@$3KK[5%A/4T9@S"\'3KK5TEA/3-\`X$YU``!.5?_T2.<!,B9O`"1^Y
  647. M_T*G0J=.NOX,4$\K0/_X2H!G5DAX`"@O`$ZZ`3A03R1`(`IG.D'Z`$QP`")*T
  648. M<@`L>``$3J[^1$J`9APU?``*`!PB2DZN_C@FZ@`@)JH`)'X`(DI.KOX^+PI.F
  649. MN@#(6$\O*@`.3KKZBEA/(`=,WTR`3EU.=71I;65R+F1E=FEC90````!(YP`RO
  650. M)FP4_"`+9Q0D4R)+("L`""QX``1.KO\N)DI@Z)'(*4@5`"E(%/Q,WTP`3G5(J
  651. MYP$R+B\`%'`,WH`@!W(`+'@`!$ZN_SHF0"`+9@1P`&`Z)T<`"$7L%/P@:@`$E
  652. M)T@`!)'()HA*DF8")(M*J@`$9P8B:@`$(HLE2P`$2JP`U&8$*4L`U$'K``P@7
  653. M"$S?3(!.=0``````````````````2.<`$B9O``P7?`#_``@P?/__)T@`%"=(:
  654. M`!AP`#`K`!(B2RQX``1.KO\N3-](`$YU2.<!,B9O`!0N+P`8(`MF!'``8"P@:
  655. M!R(\``$``2QX``1.KO\Z)$`@"F<4%7P`!0`(0BH`"25+``X@!S5``!(@"DS?A
  656. M3(!.=0`````#[`````$````!```=;@````(````$````#`````8````````#F
  657. M\@```^D```#43E7X7+_L`O1E``+.2.<',"XO!\`F;P?$?`!Z`'`!OH!O#"\KC
  658. M``1.N@+L6$\L`'`"OH!O#"\K``A.N@+:6$\J`"`%#(`````"9QP,@`````%GY
  659. M#$J`9AA%^0```2I@%D7Y```"@F`.1?D```,N8`9%^0```2I.N0````!.N0``O
  660. M`'XO`"]``!Q.N0```$(@0"EH`#(#/$AM^'0O0``<80``KDAM^'1A``$&2&WX4
  661. M;$ZZ`GA(>``!+RP#/$ZZ`C9/[P`8>@!'[?AT8!(O&R\%+RP#/$ZZ`EI/[P`,Q
  662. M4H4,A0```>!MYB\*+P9(>`'?0J=(;?AT3KD`````2&WX9$ZZ`BI(;?AD2&WX^
  663. M;&$``4).N@'2+H$O`$AL``!.N@(:2'@`^DZZ`>(NKP!`3KH"%BZO`$1.N@(4"
  664. M+JP#1$ZZ`A(NK`-`3KH""DSM#.#X2$Y=3G6_[`+T90`!ADCG`1`F;P`,?@!@-
  665. M!";'4H<,AP```>!M]$S?"(!.=;_L`O1E``%@2.<`,"9O``P@2R9(1>@'@&`,U
  666. M+QM(;``63KH!GE!/M\IE\$AL`!Y.N@%F6$],WPP`3G5.5?_PO^P"]&4``2)(5
  667. MYP`P)FT`"$7K!X!@)$ZZ`2XB$R]!``PB/````>!.N@$,Y8$@;0`()O`8`"&OB
  668. M``P8`+?*9=A,WPP`3EU.=;_L`O1E``#<2&P`($ZZ`0183TYU3E4``+_L`O1E=
  669. M``#$+RT`""\M``Q(;``H3KH!%$Y=3G5.50``O^P"]&4``*0O+0`(+RT`#$AL$
  670. M`#).N@#T3EU.=4Y5__2_[`+T90``A$CG,``@;0`,(!`@;0`(D)`O0``(("@`8
  671. M!$ZZ`)Y.N@!J)#Q!+H2`=@!.N@":2.\``P`,(&T`#"`H``1.N@!\3KH`2$ZZ.
  672. M`(!,[P`,``Q.N@!&3KH`5$ZZ`#)([P`#``P@+P`(3KH`5$ZZ`"!,[P`,``Q.Y
  673. MN@!83KH`,$S?``Q.74YU``!.^0``((!.^0``!L!.^0``)ZA.^0``#;).^0``&
  674. M`!Q.^0``([A.^0``!;1.^0````!.^0``&;Q.^0``!RA.^0``*O1.^0``"N!.[
  675. M^0``#:1.^0``*WA.^0````!.^0```>I.^0``&B!.^0```!1.^0````!.^0``W
  676. M``````/L````#@````````,B```"_@```NP```,<```#$````SH```+F```"I
  677. M^````PH```,T```"X````R@```,6```"V@````,````"````B````'P```!V]
  678. M````!0````,```#R````:````&````!P````6`````$````%```#!`````$`8
  679. M```&```#3`````(````'```#+@```O(````"````"````T8```-`````````9
  680. M`_(```/I````,[_L`O1E``"B2'@`(4AL`*Q.N@"H4$\I0`-`9@A"ITZZ`*!8/
  681. M3TAX`"%(;`"^3KH`C%!/*4`#1&8(0J=.N@"$6$].=;_L`O1E``!@2.<`,"9OL
  682. M``PI2P!L2&P`3DZZ`%A83R1`(`IF$"\+3KH`7$*73KH`4%A/8`(@"DS?#`!.`
  683. M=;_L`O1E```D+PM(;`",3KH`(%A/)D`@"V8*0J=.N@`D6$]@`B`+)E].=4[Y!
  684. M```@@$[Y````*$[Y````/$[Y````%$[Y```E#$[Y`````````^P````"````=
  685. M`````,(```"J`````0````8```"\`````P````@```"P````R````+8`````H
  686. M```#\@```^D```%>3E7_[+_L`O1E``5.2.</,"XO`#@J!R@M`!`L!"`&D(4F1
  687. M;0`(L*T`%&X4+P0O!R\+(&T`&$Z03^\`#&```.8@!]"$2H!J`E*`XH#E@"!+3
  688. M*#`(`"`%Y8#7P"`&Y8#1P"1(8`12A5B+(!.PA&P,NJT`$&WP8`13AEF*N))LP
  689. M!+R';O2ZAFY>0J<O+`,\3KH$TBZ3+P4O+`,\3KH$V"Z2+P8O+`,\3KH$S"`3C
  690. M)I(D@$AX``%.N@2X2'@``2\L`SQ.N@2@+ILO!2\L`SQ.N@2F+I(O!B\L`SQ..
  691. MN@2:3^\`-%*%4X99BKJ&;X`H+0`4)&T`""9M`!B^AFP2+PLO!"\&+P<O"F$`M
  692. M_OY/[P`4+"T`$+J&;!(O"R\$+P8O!2\*80#^Y$_O`!1,WPSP3EU.=4Y5_]B_G
  693. M[`+T90`$)$CG#S`F;P!(+B\`4'H!("T`#"(`Y8$@2]'!*5`#3"@`4H12AR`'&
  694. M(@3E@=?!+T``&"](`!Q@``#N?`!%[`-,8`12AEB*O(5L!B`3L))N\D*G+RP#U
  695. M/$ZZ`](NDR\$+RP#/$ZZ`]A/[P`0+@4@!>6`0>P#3-'`)DA@5D*G+RP#/$ZZ1
  696. M`Z@@!]"M``PB`%.!0>O__"Z0+P$O+`,\+T``,"](`#A.N@.8(&\`.":02'@`N
  697. M`2\L`SQ.N@-T+I,O+P`X+RP#/$ZZ`WA/[P`@4X<F;P`HOH9NID*G+RP#/$ZZF
  698. M`TX@!M"M``PNDB\`+RP#/"]``#!.N@-*(&W_["202'@``2\L`SQ.N@,F+I(OD
  699. M+P`X+RP#/$ZZ`RI/[P`@4H52A"9M_^Q8BRXO`!@K2__LN(=M`/\,+"T`#"9OI
  700. M`!Q%[`-,8`0FVE*&O(=M^$S?#/!.74YU3E7_\+_L`O1E``+,2.<',"XO`#`L:
  701. M+P`T<`$K0/_P(`<N`.6`(&T`"-'`)$A@<BH&(`7E@"!M``C1P"9(8%H@$K"3)
  702. M;U!"IR\L`SQ.N@*0+I(O!R\L`SQ.N@*6+I,O!2\L`SQ.N@**(!(DDR:`2'@`^
  703. M`2\L`SQ.N@)F+I(O!R\L`SQ.N@)L+I,O!2\L`SQ.N@)@3^\`,%.%68NZAVZB%
  704. M4H=8BKZ&;8I,WPS@3EU.=4Y5\#"_[`+T90`"($CG#S`F;P_P+"T`#"X&(`>0X
  705. MA^6`0>WP3-'`)$@@!^6`(DO3P"9)*BT`$"](`"`O20`<8`0DVU*'OH5O^"`%K
  706. MD(92@"(`2H%J`E*!XH$H`2P`(`13@.6`0>WP2")(T\`@!N6`T<`K2/!`*TGPN
  707. M1'`!N(!O%%.$(&WP1"H0*T7_Z%FM\$1@``"F0J<O+`,\3KH!EBXM``P@!M"'?
  708. M4X`@;?!`+I`O`"\L`SPO0``H3KH!BB!M\$`J$"M%_^@@K?!,2'@``2\L`SQ.!
  709. MN@%>(&WP0"Z0+R\`,"\L`SQ.N@%>3^\`(%.&6:WP0'`!O(!F0$*G+RP#/$ZZN
  710. M`3(NK?!,+P<O+`,\3KH!-BMM_^CP3$AX``$O+`,\3KH!$BZM\$PO!R\L`SQ._
  711. MN@$63^\`(&```-@N!"`'WH<O0``DY8!![?!(T<`F2"`O`"30K0`,4X!([P`!)
  712. M`!B^AFT(OH9G&+Z&;F0@!^6`0>WP2-'`(!"PJ``$;`)2AR`'Y8!![?!(T<`DG
  713. M2+J2;$!"IR\L`SQ.N@">+I,O+P`@+RP#/$ZZ`*(FDDAX``$O+`,\3KH`@BZ3*
  714. M+R\`,"\L`SQ.N@"&3KH`=D_O`"!@`/]P0J<O+`,\3KH`7BZ3+R\`("\L`SQ.Q
  715. MN@!B)JW_Z$AX``$O+`,\3KH`0"Z3+R\`,"\L`SQ.N@!$3KH`-$_O`"!@`/YN4
  716. M)&\`'"9O`"`L+0`08`0DVU*'OH9O^$S?#/!.74YU3OD``""`3OD````<3OD`:
  717. M`"IP3OD`````3OD`````<&$```/L`````@````````5F```%6@````$````%Z
  718. M```%;`````(````'```%<@``!6`````````#\@```^H```"\5&EM92!E;&%P%
  719. M<V5D.B`E,BXT9@H``%LE,#-D70``"@`;6T@;6TH``!M;)60[)61(6``;6R5D-
  720. M.R5D2"``475I8VMS;W)T('=I;F1O=P````````*``@```0```````!0/````1
  721. M```````````\````````````!0`%`H`"```/2&ER97,@4V-R965N````````4
  722. M`H`"```"``&`!``/`````````'X``````````&EN='5I=&EO;BYL:6)R87)Y>
  723. M`&=R87!H:6-S+FQI8G)A<GD``````"@`````````````````````````````<
  724. M`0H```````````````````````````````````````````$L````````````X
  725. M`````````````````````````````````````````````````````````````
  726. M``````````````````"```````$```0`__\````.``X```````````````#_>
  727. M_P````0`!````````"=.```!7/__````!``$````````)V0`````__\````.V
  728. M``X````````I3`````#__P````0`!``````````````!F/__````!``$````H
  729. M````*6@`````__\````$``0````````I<@``````("`@("`@("`@*"@H*"@@Z
  730. M("`@("`@("`@("`@("`@("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0@
  731. M$!`0$!"!@8&!@8$!`0$!`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@(":
  732. M`@("`@("`@("`@("`@("`@("$!`0$"`@("`@("`@("`H*"@H*"`@("`@("`@L
  733. M("`@("`@("`@($@0$!`0$!`0$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!2
  734. M@8&!@0$!`0$!`0$!`0$!`0$!`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("6
  735. M`@("`@("`@("`@(0$!`0(````````@````/L````!0````````'@```!S```:
  736. M`:0```&0```!?`````8````$```!O````8````$*````Z````*````!H````V
  737. M`````_(```/I````!2\.+'D``!3X(B\`"$ZN_SHL7TYU```#[`````$````$D
  738. M````!`````````/P`````E]$96QA>0````````````````/R```#Z0````LOB
  739. M#BQY```#*")O``A.KOYB+%].=2\.+'D```,H(F\`""`O``Q.KOW8+%].=0``!
  740. M`^P````"````!````!@````$`````````_`````#7T]P96Y,:6)R87)Y````-
  741. M%`````1?0VQO<V5,:6)R87)Y``````````````````/R```#Z0````TO#BQY2
  742. M```#1")O``A,[P`#``Q.KOZ\+%].=0``+PXL>0```T0B;P`(("\`#$ZN_JHL;
  743. M7TYU```#[`````(````$````(`````0````````#\`````)?4V5T05!E;@``?
  744. M`!P````#7U=R:71E4&EX96P```````````````/R```#Z0```!0O#BQY```#E
  745. M0"!O``A.KO^^+%].=2\.+'D```-`(&\`"$ZN_[@L7TYU+PXL>0```T`@;P`(7
  746. M3J[_.BQ?3G4O#BQY```#0"!O``A.KO\T+%].=0```^P````$````!````$``S
  747. M```L````&`````0````````#\`````-?3W!E;E=I;F1O=P`````\`````U]/4
  748. M<&5N4V-R965N`````"@````#7T-L;W-E5VEN9&]W````%`````-?0VQO<V53:
  749. 18W)E96X``````````````_(#%
  750. ``
  751. end
  752. size 15812
  753. SHAR_EOF
  754. #    End of shell archive
  755. exit 0
  756. -- 
  757. Bob Page, U of Lowell CS Dept.  page@swan.ulowell.edu  ulowell!page
  758. Have five nice days.
  759.